package com.nbsaas.boot.queue.scheduler;

import com.nbsaas.boot.queue.monitor.TaskMonitor;
import com.nbsaas.boot.queue.task.Task;
import com.nbsaas.boot.queue.task.TaskStatus;

import java.util.List;

public interface TaskScheduler {
    /**
     * 启动调度器
     */
    void start();

    /**
     * 关闭调度器
     */
    void shutdown();

    /**
     * 调度任务
     */
    void scheduleTask(Task task);

    /**
     * 获取任务
     */
    Task getTask(String taskId);

    /**
     * 获取指定状态的任务列表
     */
    List<Task> getTasksByStatus(TaskStatus status);

    /**
     * 取消任务
     */
    boolean cancelTask(String taskId);

    /**
     * 获取任务统计信息
     */
    TaskMonitor.TaskStatistics getStatistics();
} 